package com.mm.cloud.lease.controller;

import com.mm.cloud.common.core.result.Result;
import com.mm.cloud.lease.dto.housing.form.DeleteHousingDTO;
import com.mm.cloud.lease.dto.housing.form.SaveHousingDTO;
import com.mm.cloud.lease.dto.housing.form.UpdateHousingDTO;
import com.mm.cloud.lease.dto.housing.query.QueryHousingDTO;
import com.mm.cloud.lease.service.IHousingService;
import com.mm.cloud.lease.vo.housing.HousingPageVO;
import com.mm.cloud.lease.vo.housing.HousingVO;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * <p>
 * 房源 前端控制器
 * </p>
 *
 * @author mr
 * @since 2025-06-30
 */
/**
 * 房源 前端控制器
 * 提供房源的新增、修改、删除、查询等接口
 */
@RestController
@AllArgsConstructor
@RequestMapping("/housing")
public class HousingController {

    private final IHousingService housingService;

    /**
     * 新增房源
     *
     * @param dto 房源新增参数
     * @return 新增房源主键ID
     */
    @PostMapping
    public Result<Long> saveHousing(@RequestBody SaveHousingDTO dto) {
        return housingService.saveHousing(dto);
    }

    /**
     * 修改房源
     *
     * @param dto 房源修改参数（包含主键ID）
     * @return 操作结果
     */
    @PutMapping
    public Result<String> updateHousing(@RequestBody UpdateHousingDTO dto) {
        return housingService.updateHousing(dto);
    }

    /**
     * 删除房源
     *
     * @param dto 删除参数（包含主键ID）
     * @return 操作结果
     */
    @DeleteMapping
    public Result<String> deleteHousing(DeleteHousingDTO dto) {
        return housingService.deleteHousing(dto);
    }

    /**
     * 获取房源详情
     *
     * @param id 房源ID
     * @return 房源详情
     */
    @GetMapping("/{id}")
    public Result<HousingVO> getHousing(@PathVariable("id") Long id) {
        return housingService.getHousing(id);
    }

    /**
     * 获取房源列表（分页/条件）
     *
     * @param dto 查询条件
     * @return 房源列表及总数
     */
    @GetMapping
    public Result<List<HousingPageVO>> getHousingList(QueryHousingDTO dto) {
        return housingService.getHousingList(dto);
    }
}
